package Tela;

import java.awt.Component;
import java.awt.Container;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.text.JTextComponent;

public class SelecionaTudo extends FocusAdapter
{
    private static FocusListener f;  
    //Construtor privado para não ser instaciado fora da classe 
    private SelecionaTudo() 
    {  
    }  
    /** 
    * Evento focusGained, que vai ser executado quando o usuário 
    * selecionar o campo de texto, que vai fazer todo o texto 
    * (se tiver algum) ser selecionado automaticamente 
    */  
    public void focusGained(FocusEvent e) 
    {  
        Object o = e.getSource();  
        if (o instanceof JTextComponent) 
        {  
            JTextComponent j = (JTextComponent) o;  
            j.selectAll();  
        }  
    }  
    //Retorna a única instância de SelecionaTudo 
    public static FocusListener getListener() 
    { 
        if (f == null) 
        {  
            f = new SelecionaTudo();  
        }  
        return f;  
    }  
    //Dado um Conteiner, adiciona o FocusListener para todos os componentes de texto dentro do conteiner, e de quaisquer 
    //Conteirners ascendentes param o Conteiner ancestral de todos os componentes de texto que se quer adicionar o FocusListener   
    public static void addListeners(Container c) 
    {  
        if (c instanceof JTextComponent) 
        {  
            JTextComponent j = (JTextComponent) c;  
            j.addFocusListener(getListener());  
        }
        else
        {  
            for (Component comp : c.getComponents()) 
            {  
                if (comp instanceof Container) 
                {  
                    addListeners((Container) comp);  
                }  
            }  
        }  
    }  
}

